LinuC-2 - 201試験 - 2.04:システムの保守と運用管理 - 2.04.4 リソース使用状況の把握

Last Update : August 21 2022 17:47:14

     

a. CPU使用率の測定

1.iostat

iostat コマンドは、CPUの使用率とI/Oデバイスの使用状況を表示するコマンドです。
iostatはsysstatパッケージに収録されています。「sudo yum install iostat」あるいは「sudo apt-get install iostat」としてインストールできます

● iostat コマンド構文
  iostat [オプション] [更新の間隔 [回数]]

● iostat オプション
 -c CPU使用率のみを出力する
 -d デバイス使用率のみを出力する
 -g グループ名 最後にグループ名を使って合計を出力する。対象デバイスは「-g TOTAL /dev/sda」のように指定可能。対象デバイスをALLにすると全デバイスの合計となる
 -h 読みやすい表示形式で出力する(デバイス名の行と統計行の情報の2行に分かれる)
 -j 種類 永続的な名前で表示する。種類はID、LABEL、PATH、UUIDが指定可能で、「-j ID /dev/sda」あるいは「-j ID ALL」のように対象のデバイスを指定できる(自動的に「-h」も指定した状態になる)
 -k KB毎秒で出力する
 -m MB毎秒で出力する
 -N デバイスマッパーの名称で表示する
LVM(Logical Volume Manager:論理ボリュームマネージャ)を用いた場合のデバイスマッパー名を表示する
 -p デバイス 表示対象のデバイスを指定する。パーティションごとの情報を出力したい場合は「-p /dev/sda」のように指定するか、または「-p ALL」と指定する。ALLの場合、使用されていないデバイスも含めて全て出力される(「-z」を指定すると使用されていないデバイスは出力されない)
 -t 計測した時刻を出力する
 -T 合計のみ出力(「-g」と共に使用)
 -x 拡張ディスク統計情報を出力する
 -y 繰り返し表示する際に、最初に表示される“システム起動時からの統計情報(平均と合計)”を省略する
 -z 表示対象の期間に使用されていないデバイス(入出力がゼロのデバイス)は表示しない

# iostat
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 
2018年09月01日  _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.93    0.04    9.25   15.62    0.00   69.16

Device:       tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda         53.23      1961.41       220.82     588931      66304
dm-0        53.30      1863.61       213.93     559566      64236
dm-1         0.31         7.42         0.00       2228          0

 項目名 CPU使用率の内訳
 %usr アプリケーション(ユーザーレベル)
 %nice アプリケーション(ナイス値による優先指定)
 %system カーネル(システムレベル)
 %iowait アイドル状態(ディスクI/Oリクエスト待ち)
 %steal 他の仮想CPU向けのハイパーバイザ処理
 %idle アイドル状態(ディスクI/Oリクエスト待ち以外)


 項目名 デバイス使用状況の内訳
 tps 1秒当たりのI/Oリクエスト数(transfers per second)
 kB_read/s 1秒当たりの読み出し量(KB単位)
 kB_wrtn/s 1秒当たりの書き込み量(KB単位)
 kB_read 読み出し量の合計(KB単位)
 kB_wrtn 書き込み量の合計(KB単位)

2.sar

sar コマンドは、CPUやメモリ、ディスクなどの使用率を時間ごとに一覧表示するコマンドです。
sarは、sysstatパッケージに収録されています。「sudo yum install sysstat」あるいは「sudo apt-get install sysstat」としてインストールできます



b. メモリ使用量の測定

1.vmstat

vmstat は仮想メモリやCPU、ディスクI/Oの統計情報を表示するコマンドです。
vmstatコマンドをそのまま実行すると,現在のプロセス,メモリー,スワップ,デバイス,割り込み,CPUの情報が表示される。
また,「-d」や「-p」オプションを付けるとパーティションやディスクへの読み書き状況などが表示される。「-f」オプションを指定するとシステムが起動してからコマンド実行時までの間に,プロセスを作成した回数が表示される。

● vmstat コマンド構文
  vmstat [オプション] [更新の間隔 [回数]]

● vmstat オプション
 -a--activeアクティブ/非アクティブなメモリの量を表示する(カーネル2.5.41以降)
 -d--diskディスクの統計情報を表示する(カーネル2.5.70以降)
 -D--disk-sumディスクの統計情報を1項目1行で表示する(常に1回のみ表示)
 -f--forksブート後のフォーク数を表示する
 -m--slabsスラブ情報を表示する(root権限が必要)
 -n--one-header繰り返し表示の際にヘッダを1度だけ表示する(デフォルトでは一定の周期でヘッダを表示する)
 -p パーティション--partition パーティション指定したパーティションの統計を表示する(カーネル2.5.70以降)
 -s--stats1項目1行でメモリの統計情報とイベントカウンタを表示する(常に1回のみ表示)
 -S 単位--unit 単位単位をk,K,m,Mで指定する(kは1000、Kは1024、mは1000000、Mは1048576バイト単位)
 -t--timestampタイムスタンプを表示する(オプションなし、「-a」「-d」使用時のみ)

●項目の説明      
 種類  記号  説明
 procs  r 実行中と実行待ち中のプロセス数の合計
   b 割り込み不可能なスリープ状態にあるプロセス数
 memory  swpd 使用中の仮想メモリの量
   free 空きメモリの量
   buff バッファとして使用しているメモリの量
   cache キャッシュに使用している量
   inact アクティブではないメモリの量 ※
   active アクティブなメモリの量 ※
 swap  si ディスクからスワップインしているメモリの量
   so スワップアウトしている量
 io  bi HDDのようなブロック型デバイスから受け取ったブロック数
   bo ブロック型デバイスに送ったブロック数
 system  in 1秒当たりの割り込み回数
   cs コンテクストスイッチの回数
 cpu  us カーネルコード以外の実行に使用した時間(ユーザー時間)
   sy カーネルコードの実行に使用した時間(システム時間)
   id 空転していたアイドル時間
   wa I/O待ち時間
   st 仮想環境で実行している際、ホストOSにCPUリソースを割当ててもらえなかった時間の割合

メモリの統計情報を表示する
# vmstat

アクティブ/非アクティブなメモリの統計情報を表示
# vmstat -a

メモリの統計情報を1項目1行で表示する
# vmstat -s

ディスクI/Oの情報を表示
# vmstat -d

/dev/sda1の情報を表示
# vmstat -p /dev/sda1

メモリの統計情報を5秒間隔で表示
# vmstat 5

ディスクI/Oの統計情報を1秒間隔で10回表示
# vmstat -d 1 10


c. ディスクI/Oの測定

1.iotop

iotop コマンドは、プロセス毎のディスクI/Oを監視するコマンドです。
sarやvmstatはシステム全体のディスクI/Oの状況は確認できますが、プロセス毎の確認はできません。
top コマンドのように I/O 処理が発生しているプロセスをリアルタイムでモニタリングする事が可能です。

● iotop コマンド構文
  iotop [オプション] 

● iotop オプション
 -o --only I/O処理を実施しているプロセス/スレッドのみ表示
 -b --batch バッチモード
 -n 数値 --iter=数値 終了までのモニタ回数(指定しない場合無限)
 -u ユーザー --user=ユーザー 指定したユーザのI/Oだけを表示する
 -d 秒 --delay=秒 モニタ間隔を指定(指定しない場合1秒)
 -p PID --pid=PID モニタするプロセスのPIDを指定
 -P --processes プロセスのみ表示(スレッドは表示しない)
 -a --accumulated I/O帯域幅(バイト/秒)ではなく累積値(バイト)を表示
 -k --kilobytes キロバイト表示
 -t --time タイムスタンプを表示(バッチモード)
 -q --quiet ヘッダ表示の抑制(バッチモード)
 -h --help ヘルプの表示
 --version   バージョンの表示

●iotop表示時のトグルキー
トグルキー  同じ機能のオプション  説明
 r  - 表示順序を逆にする。左右の矢印キーを押して、表示順序を逆にしたい項目を選択する(選択中の項目は黄色)。項目を選択したらrを押下する。もう一度rを押すと元に戻ります。
 o  -o, --only I/O処理を実施しているプロセス/スレッドのみ表示
 p  -P, --processes プロセスのみ表示(スレッドは表示しない)
 a  -a, --accumulated 帯域ではなく累積値の表示
 q  - iotop表示終了
 i  - プロセス/スレッドの優先度変更


d. ネットワークI/Oの測定

1.ss

ss コマンドは、ネットワーク通信で利用するソケットについての情報などを出力するコマンドです。

● ss コマンド構文
  ss [オプション] [フィルター]

● ss オプション
 -n --numeric サービス名の名前解決を行わない(ポート番号を表示)
 -r--resolv名前解決を行う
 -a--all接続待ち状態(LISTEN)のソケットと接続待ち状態にないソケットの両方を表示する
 -l--listening接続待ち状態のソケットだけを表示する
 -o--optionsタイマー情報も表示する
 -e--extended詳細情報を表示する
 -m--memory各ソケットのメモリの使用量も表示する
 -p--processesソケットを使用しているプロセスも表示する
 -i--info内部TCPの情報も表示する
 -s--summaryソケットの種類ごとに本数を表示する
 -4--ipv4IPv4に関するソケット情報のみ表示する
 -6--ipv6IPv6に関するソケット情報のみ表示する
 -0--packetパケットソケットを表示
 -t--tcpTCPソケットを表示
 -u--udpUDPソケットを表示
 -d--dccpDCCPソケットを表示
 -w--rawRAWソケットを表示
 -x--unixUNIXドメインソケットを表示
 -f--family=ソケット表示するソケットの種類(ファミリー)をunix、inet、inet6、link、netlinkから指定する
 -A--query=クエリ
--socket=クエリ
指定されたソケット情報を表示する。対象をカンマ区切りで指定する。クエリは all、inet、tcp、udp、raw、unix、packet、netlink、unix_dgram、unix_stream、unix_seqpacket、packet_raw、packet_dgramから選択。
 -D--diag=ファイルRAW情報をファイルに出力する(画面には何も出力しない)
 -F--filter=ファイルフィルターの指定をファイルから読み込む


e. ファイアウォール機能とルーティングスループットを測定する


f. クライアントの帯域幅使用率をマップする

1.iptraf


g. システムトラブルの徴候と発生しそうな問題の突き合わせ / 関連付けを行う

1.htop


h. ネットワーキングを含むシステムにおいてスループットを推定し、ボトルネックを見つけ出す


z. 出題範囲概要

概要 :
  • ハードウェアリソースとネットワーク帯域幅の使用率を測定でき、リソースの問題を解決できる。

詳細 :
  • CPU使用率を測定する。
    top, htop, ps, sar
  • メモリ使用量を測定する。
    vmstat, free, sar
  • ディスクI/Oを測定する。
    iostat, iotop, sar
    I/O 待ちのプロセス, blocks in, blocks out
  • ネットワークI/Oを測定する。
    netstat, iftop, ss, sar
  • システムがオープンしているファイルやポートを表示する。
    lsof
  • ファイアウォール機能とルーティングスループットを測定する。
  • クライアントの帯域幅使用率をマップする。
  • ネットワーキングを含むシステムにおいてスループットを推定し、ボトルネックを見つけ出す。
    iptraf

  [ 例題 ] 


         

    www.it-shikaku.jp